package Config

import (
	"encoding/json"
	"image/color"
	"log"
	"os"
)

type Config struct {
	ScreenWidth       int        `json:"screenWidth"`
	ScreenHeight      int        `json:"screenHeight"`
	Title             string     `json:"title"`
	BgColor           color.RGBA `json:"bgColor"`
	RealmSpeedFactor  float64    `json:"realmSpeedFactor"`
	RealmFlySpeed     float64    `json:"realmFlySpeed"`
	BulletSpeedFactor float64    `json:"bulletSpeedFactor"`
	MaxBulletNum      int        `json:"maxBulletNum"`
	BulletInterval    int64      `json:"bulletInterval"`
	RealmHeight       float64    `json:"realmHeight"`
	TitleFontSize     int        `json:"titleFontSize"`
	FontSize          int        `json:"fontSize"`
	SmallFontSize     int        `json:"smallFontSize"`
	ObstacleSpeed     float64    `json:"obstacleSpeed"`
	RealmActionX      float64    `json:"realmActionX"`
}

// 用来将小窗口的基本变量给从json文件中获取来 ，并传输到对象之中，然后返回，
// 之后，创建NewName、的时候，也会在内部连接这个函数，然后将这个函数中的内容的参数
// 通过方法。让他显示在小窗口之中
func LoadConfig() *Config {
	f, err := os.Open("./src/Config/Config.json")
	if err != nil {
		log.Fatalf("os.Open failed: %v\n", err)
	}

	var cfg Config
	//前半句是一个文件解码器，后半句就是将解码后的结果传给了cfg
	err = json.NewDecoder(f).Decode(&cfg)
	if err != nil {
		log.Fatalf("json.Decode failed :%v\n", err)
	}
	return &cfg
}
